package com.norbitltd.guavaleaves.java.lang;

import com.google.common.base.Predicate;

public class CharacterPredicates {
	
	/**
	 * @see java.lang.Character.isDefined
	 */
	public Predicate<Character> isDefined(){
		return new Predicate<Character>(){
			public boolean apply(Character input) {
				return Character.isDefined(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isDigit
	 */
	public Predicate<Character> isDigit() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isDigit(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isHighSurrogate
	 */
	public Predicate<Character> isHighSurrogate() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isHighSurrogate(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isIdentifierIgnorable
	 */
	public Predicate<Character> isIdentifierIgnorable() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isIdentifierIgnorable(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isISOControl
	 */
	public Predicate<Character> isISOControl() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isISOControl(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isJavaIdentifierPart
	 */
	public Predicate<Character> isJavaIdentifierPart() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isJavaIdentifierPart(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isJavaIdentifierStart
	 */
	public Predicate<Character> isJavaIdentifierStart() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isJavaIdentifierStart(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isLetter
	 */
	public Predicate<Character> isLetter() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isLetter(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isLetterOrDigit
	 */
	public Predicate<Character> isLetterOrDigit() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isLetterOrDigit(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isLowerCase
	 */
	public Predicate<Character> isLowerCase() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isLowerCase(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isLowSurrogate
	 */
	public Predicate<Character> isLowSurrogate() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isLowSurrogate(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isMirrored
	 */
	public Predicate<Character> isMirrored() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isMirrored(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isSpaceChar
	 */
	public Predicate<Character> isSpaceChar() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isSpaceChar(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isTitleCase
	 */
	public Predicate<Character> isTitleCase() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isTitleCase(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isUnicodeIdentifierPart
	 */
	public Predicate<Character> isUnicodeIdentifierPart() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isUnicodeIdentifierPart(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isUnicodeIdentifierStart
	 */
	public Predicate<Character> isUnicodeIdentifierStart() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isUnicodeIdentifierStart(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isUpperCase
	 */
	public Predicate<Character> isUpperCase() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isUpperCase(input);
			}
		};
	}
	
	/**
	 * @see java.lang.Character.isWhitespace
	 */
	public Predicate<Character> isWhitespace() {
		return new Predicate<Character>() {
			public boolean apply(Character input) {
				return Character.isWhitespace(input);
			}
		};
	}
}
